package com.example.crm.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.crm.entity.SalesTeam;
import com.example.crm.entity.TeamMember;

import java.util.List;

/**
 * 销售团队服务接口
 */
public interface SalesTeamService extends IService<SalesTeam> {
    
    /**
     * 获取团队列表
     * @return 团队列表
     */
    List<SalesTeam> listTeams();
    
    /**
     * 获取团队详情（包含成员信息）
     * @param id 团队ID
     * @return 团队详情
     */
    SalesTeam getTeamDetail(Long id);
    
    /**
     * 添加团队
     * @param team 团队信息
     * @param members 成员列表
     * @return 是否成功
     */
    boolean addTeam(SalesTeam team, List<TeamMember> members);
    
    /**
     * 更新团队
     * @param team 团队信息
     * @return 是否成功
     */
    boolean updateTeam(SalesTeam team);
    
    /**
     * a获取用户所属的团队列表
     * @param userId 用户ID
     * @return 团队列表
     */
    List<SalesTeam> listUserTeams(Long userId);
    
    /**
     * 获取团队成员列表
     * @param teamId 团队ID
     * @return 成员列表
     */
    List<TeamMember> listTeamMembers(Long teamId);
    
    /**
     * 添加团队成员
     * @param teamId 团队ID
     * @param userIds 用户ID列表
     * @param role 角色
     * @return 是否成功
     */
    boolean addTeamMembers(Long teamId, List<Long> userIds, String role);
    
    /**
     * 移除团队成员
     * @param teamId 团队ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean removeTeamMember(Long teamId, Long userId);
    
    /**
     * 更新团队成员角色
     * @param teamId 团队ID
     * @param userId 用户ID
     * @param role 角色
     * @return 是否成功
     */
    boolean updateTeamMemberRole(Long teamId, Long userId, String role);
} 